package com.liangtian.mdm.system.organization.dao;

import com.liangtian.mdm.base.BaseDao;
import com.liangtian.mdm.system.organization.model.SysOrganization;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <p>Encoding    :  UTF-8</p>
 * <p>Package Name: com.liangtian.mdm.system.dictionary.dao </p>
 * <p>Project Name: dm </p>
 * <p>Copyright   :  Copyright(c) 2016 石化盈科信息技术有限责任公司 </p>
 * <p>Created Time: 2016-04-22 17:31</p>
 * <p>Description : 机构组织持久层</p>
 *
 * @author : wangyq
 * @version :  1.0
 */
@Repository
public interface SysOrganizationDao extends BaseDao<SysOrganization> {

    /**
     * @param params
     * @return 组织机构页面对象
     * @desc 根据组织机构父id获取所有的子机构，如果父id为空，查询所有的组织机构
     */
    List<Map<String, Object>> queryAllOrganizationList(Map<String, Object> params);

    /**
     * @param params
     * @return 查询到的树形组织机构
     * @desc 查询树状结构组织机构
     */
    List<Map<String, Object>> queryOrganizationMapListForTree(Map<String, Object> params);

    /**
     * @param params
     * @return
     * @desc 查询子组织结构
     */
    List<SysOrganization> querySubOrganizationMapList(Map<String, Object> params);

    /**
     * @param sysSysOrganization 对象
     * @return 受影响的行数
     * @desc 编辑 （编辑数据；启用-1；禁用-0）
     */
    int updateOrganization(SysOrganization sysSysOrganization);

    /**
     * @param params ids
     * @return 受影响的行数
     * @desc 批量删除
     */
    int batchDeleteOrganization(Map<String, Object> params);

    /**
     * @param sysOrganization
     * @return 受影响的行数
     * @desc 新增组织机构对象
     */
    int insertOrganization(SysOrganization sysOrganization);

    /**
     * @param params
     * @return 受影响的行数
     * @desc 编辑组织状态
     */
    int editOrganizationStatus(Map<String, Object> params);

    /**
     * @param params
     * @return 单个机构对象
     * @desc 根据id查询机构对象
     */
    Map<String, Object> queryOrganizationById(Map<String, Object> params);

    /**
     * @param params
     * @return
     * @desc 查询是否有相同名的机构
     */
    int querySameOrganizationNameCounts(Map<String, Object> params);

    /*** <p>Title: </p>
     * <p>Description: TODO </p>
     * <p>Company:@param orgId
     * <p>Company:@return </p>
     * @author : xiaoliu
     * @date :2016年10月27日下午3:34:28
     */
    List<SysOrganization> queryOrgByName(String orgName);

}